package com.yijianonghu.controller.app.bill;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.yijianonghu.util.Constants.AppConstants;
import com.yijianonghu.util.result.Result;

@Controller
@RequestMapping(method=RequestMethod.POST)
public class BillController {
	
	/**
	 * [sys_web_service]bill_save
	 * @param token 登录令牌
	 * @param keytype 订单类型. 1:从购物车生成的订单;2：直接购买;3：定制订单;4：预约型订单
	 * @param keyid 相关id. 当keytype=1时：keyid=cart_id(多个用逗号分隔)；当keytype=2，4时：keyid=blog_id；当keytype=3时，keyid=good_id
	 * @param specid 商品规格id. keytype=2时需传,商品无规格的时传0,其他keytype时传"无"
	 * @param addition_ids 附加服务ids. keytype=3时可传,无附加服务传""
	 * @param address_id 收货地址id. keytype=3,4时，可传“无”
	 * @param buycount 购买数量. 一个大于零的整数
	 * @param contact_name 联系人名字. 当keytype=1,2时，可传“无”
	 * @param contact_tel 联系人电话. 当keytype=1,2时，可传“无”
	 * @param memo 具体描述. 当keytype!=3时，可传“无”
	 * @param startdate 走走开始时间. 当keytype!=4时，可传“无”
	 * @param personal_id 预约人的身份证号. 当keytype!=4时，可传“无”
	 * @return
	 */
	@RequestMapping(value=AppConstants.APP_PREFIX+AppConstants.APP_GENERAL_VERSION_REGX+"/bill_save")
	public @ResponseBody Result saveBill(String token, Integer keytype, Long keyid, String specid, String addition_ids, String address_id, Integer buycount, String contact_name, String contact_tel, String memo, String startdate, String personal_id){
		//TODO 返回值不确定。参数类型不确定。如果订单中有多个商品，如何确定参数buycount?什么是走走？
		return null;
	}
	
	/**
	 * [sys_web_service]bill_list
	 * @param token 登录令牌
	 * @param billtype 订单类型. 1:普通订单；2:定制订单；3:预约订单；4代付订单
	 * @param keytype 类型. 1:全部；2:待支付；3:待发货；4:待收货；5:待评价；6:待确认
	 * @param page 当前列表翻页索引. 第一页时请传递page=0，翻页时依次递增。
	 * @return
	 */
	@RequestMapping(value=AppConstants.APP_PREFIX+AppConstants.APP_GENERAL_VERSION_REGX+"/bill_list")
	public @ResponseBody Result listBill(String token, Integer billtype, Integer keytype, Integer page){
		//TODO 返回值不确定。参数类型不确定。
		return null;
	}
	
	/**
	 * [sys_web_service]bill_get
	 * @param token 登录令牌	
	 * @param id 订单id
	 * @return
	 */
	@RequestMapping(value=AppConstants.APP_PREFIX+AppConstants.APP_GENERAL_VERSION_REGX+"/bill_get")
	public @ResponseBody Result getBill(String token, Long id){
		//TODO 返回值不确定。参数类型不确定。
		return null;
	}
	
	/**
	 * [sys_web_service]bill_saveoperate
	 * @param token 登录令牌
	 * @param keyid 相关id. keytype=7时,keyid=[bill_id,pay_username]；keytype=1,2,4,5,6,14,15时keyid=bill_id；keytype=3,8,9,10,11,12,13时，keyid=goods_id（订单货品id）
	 * @param keytype 操作类型. 1：删除订单, 2：确定收货, 3：申请退货, 4：发货, 5：同意定制/预约, 6：拒绝定制/预约, 7：找人代付, 8：撤销退款申请, 9：修改退款申请, 10：同意退款申请, 11：拒绝退款申请, 12：退货发货, 13：确认收到退货, 14：接受代付, 15：拒绝代付 
	 * @param reason 申请原因/拒绝原因/处理说明	
	 * @param description 原因说明
	 * @param shipping_name 快递名称
	 * @param shipping_num 快递号
	 * @return
	 */
	@RequestMapping(value=AppConstants.APP_PREFIX+AppConstants.APP_GENERAL_VERSION_REGX+"/bill_saveoperate")
	public @ResponseBody Result saveOperateBill(String token, String keyid, Integer keytype, String reason, String description, String shipping_name, String shipping_num){
		//TODO 返回值不确定。参数类型不确定。该方法和saveBill的区别？何时调用？
		return null;
	}
	
	/**
	 * [sys_web_service]bill_expressfee_get
	 * @param token 登录令牌
	 * @param blog_ids 商品id. 多个商品用英文逗号隔开
	 * @param spec_ids 商品规格id. 多个商品规格用英文逗号隔开
	 * @param buycounts 商品购买数量. 多个商品用英文逗号隔开
	 * @param address_id 收货地址id
	 * @return
	 */
	@RequestMapping(value=AppConstants.APP_PREFIX+AppConstants.APP_GENERAL_VERSION_REGX+"/bill_expressfee_get")
	public @ResponseBody Result getBillExpressFee(String token, String blog_ids, String spec_ids, String buycounts, String address_id){
		//TODO 返回值不确定。参数类型不确定。该方法和saveBill的区别？何时调用？
		return null;
	}
	
	/**
	 * [sys_web_service]bill_bills_save
	 * @param token 登录令牌
	 * @param id 发票id. 新增时传0
	 * @param bill_id 订单id
	 * @param bills_type 发票类型. 1纸质；2电子
	 * @param bills_head 发票抬头
	 * @param bills_fee 发票金额
	 * @param email 电子邮箱地址
	 * @param bills_content 发票内容
	 * @return
	 */
	@RequestMapping(value=AppConstants.APP_PREFIX+AppConstants.APP_GENERAL_VERSION_REGX+"/bill_bills_save")
	public @ResponseBody Result saveBillBills(String token, Long id, Long bill_id, Integer bills_type, String bills_head, String bills_fee, String email, String bills_content){
		//TODO 返回值不确定。参数类型不确定。参数id新增时传0，是数字0还是"0"?
		return null;
	}
}
